net/mlx5: cannot create rte_flow rule matching ethernet multicast with jump action on bond mode 4
https://bugs.dpdk.org/show_bug.cgi?id=1266
Bug ID: 1266
Summary: net/mlx5: cannot create rte_flow rule matching
ethernet multicast with jump action on bond mode 4
Product: DPDK
Version: unspecified
Hardware: x86
OS: Linux
Status: UNCONFIRMED
Severity: normal
Priority: Normal
Component: ethdev
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: ---
[DPDK Version]
commit 238f67ca9cc00be4248b14d9ca4412edb7da62f6 (HEAD -> main, origin/main, origin/HEAD)
Author: Ajit Khaparde <[email protected]> Date: Wed Jul 12 11:05:30 2023 -0700
doc: update firmware version in bnxt guide
Update earliest supported firmware version for 22.11 release.
[OS version]
Operating System: Oracle Linux Server 8.7
Kernel: Linux 4.18.0-348.12.2.el8_5.x86_64
Architecture: x86-64
[DPDK build]
meson build
ninja -C build
[Network devices]
0000:3b:00.0 'MT2892 Family [ConnectX-6 Dx] 101d' if=ens1f0np0 drv=mlx5_core unused=
0000:3b:00.1 'MT2892 Family [ConnectX-6 Dx] 101d' if=ens1f1np1 drv=mlx5_core unused=
[OFED version]
MLNX_OFED_LINUX-5.7-1.0.2.0 (OFED-5.7-1.0.2)
[Reproduce in testpmd]
``` sudo ./dpdk-testpmd -a 0000:3b:00.0 -a 0000:3b:00.1 -c 0x0f -n 4 --vdev 'net_bonding0,slave=0000:3b:00.0,slave=0000:3b:00.1,mode=4,agg_mode=count' -- -i --port-topology=chained EAL: Detected CPU lcores: 40 EAL: Detected NUMA nodes: 2 EAL: Detected shared linkage of DPDK EAL: Multi-process socket /var/run/dpdk/rte/mp_socket EAL: Selected IOVA mode 'PA' EAL: Probe PCI driver: mlx5_pci (15b3:101d) device: 0000:3b:00.0 (socket 0) EAL: Probe PCI driver: mlx5_pci (15b3:101d) device: 0000:3b:00.1 (socket 0) bond_ethdev_mode_set(1625) - Using mode 4, it is necessary to do TX burst and RX burst at least every 100ms. TELEMETRY: No legacy callbacks, legacy socket not created Interactive-mode selected testpmd: create a new mbuf pool <mb_pool_0>: n=171456, size=2176, socket=0 testpmd: preferred mempool ops selected: ring_mp_mc testpmd: create a new mbuf pool <mb_pool_1>: n=171456, size=2176, socket=1 testpmd: preferred mempool ops selected: ring_mp_mc Configuring Port 0 (socket 0) Port 0: 04:3F:72:C7:B8:84 Configuring Port 1 (socket 0) Port 1: 04:3F:72:C7:B8:85 Configuring Port 2 (socket 0) Device with port_id=0 already stopped Port 2: link state change event Device with port_id=1 already stopped Port 2: 04:3F:72:C7:B8:84 Checking link statuses... Done testpmd> flow create 2 group 0 priority 0 ingress pattern eth dst spec 01:00:00:00:00:00 dst mask 01:00:00:00:00:00 / end actions jump group 1 / end bond_flow_create(104) - Failed to create flow on slave 0 port_flow_complain(): Caught PMD error type 1 (cause unspecified): hardware refuses to create flow: Invalid argument ```
[Notes]
When using a different action, such as 'rss' or 'queue', the rule is created without any issues.
When using a different ethernet mask, such as '0F:00:00:00:00:00', the rule is also created.
When using a different mode of the bonding PMD, the rules is created.
Signature · 2 lines
You are receiving this mail because: You are the assignee for the bug.
http://bugs.dpdk.org/show_bug.cgi?id=1266
[email protected] ([email protected]) changed:
What |Removed |Added
----------------------------------------------------------------------------
Resolution|--- |WONTFIX
CC| |[email protected]
Status|UNCONFIRMED |RESOLVED--- Comment #1 from [email protected] ([email protected]) --- Hi,
Sorry for the late response,
**Root Cause**: MLX5 hardware/firmware steering on root table (group 0) has limited support for jump actions combined with partial MAC address masks. The bonding PMD directly passes the flow to slave ports without adaptation.
## Immediate Workarounds
### Workaround 1: Use Group 1 (Recommended)
Instead of group 0, use group 1:
```bash flow create 2 group 1 priority 0 ingress pattern eth dst spec 01:00:00:00:00:00 dst mask 01:00:00:00:00:00 / end actions jump group 2 / end ```
First, create a catch-all rule in group 0 to reach group 1:
```bash flow create 2 group 0 priority 1 ingress pattern eth / end actions jump group 1 / end ```
Signature · 2 lines
You are receiving this mail because: You are the assignee for the bug.